community italiana di domotica personale
 
Integrare un UPS a Home Assistant tramite “Network UPS Tools” (NUT)

Integrare un UPS a Home Assistant tramite “Network UPS Tools” (NUT)

Scopi della guida:
  • Integrare le letture di uno o più gruppi di continuità (UPS) alla domotica Home Assistant (al fine di intercettare eventuali cadute di tensione e altro) 
  • Livello di difficoltà: bassa
  • Categoria d’integrazione: Local Push
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
  • Home Assistant configurato e funzionante
  • Network UPS Tools installati e funzionati (spiegato meglio in guida)
Dispositivi fisici utilizzati:
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 1.2

NUT + Home Assistant

Abstract

La possibilità di integrare sulla domotica gestita tramite il noto HUB personale Home Assistant le letture istantanee di un gruppo di continuità (UPS) è tra le cose più utili – e forse primarie – che si possano attuare.

Un gruppo di continuità è, in pratica, un pacco batterie che consente a determinati elettrodomestici (solitamente a basso consumo) di non subire uno spegnimento repentino in caso di black-out. Nulla come la domotica merita questo tipo di salvaguardia, e non per vezzo: per utilità. Si pensi banalmente al tema dei furti in appartamento trattato sulla scheda in cui spieghiamo come scegliere un UPS domestico.

Integrare un UPS al proprio HUB significa conoscerne istantaneamente lo stato di carica delle batterie e molti indicatori, tra i quali, primariamente, il fatto che ci si trovi sotto alimentazione di rete o, in caso di black-out, sotto batterie. Questo è utile perché offre la possibilità all’utente di definire delle automazioni che, in assenza di corrente (qualsiasi sia il motivo di questo outage) venga allertato tramite notifiche, inneschi degli allarmi e tanto altro ancora.

A tale scopo, Home Assistant dispone, tra le decine di componenti di integrazione, di uno specifico chiamato “Network UPS Tools (NUT)” il quale consente di integrare qualsiasi UPS collegato a un server NUT. Va da sé che, prima di utilizzare questo componente, ci si debba dotare di tale server.

Ma vediamo una cosa alla volta.

Si parte

Cos’è NUT

NUT, acronimo di Network UPT Tools, è un insieme di strumenti software che consente a un generico computer (Raspberry? Mac? Intel NUC? qualsiasi, in pratica) di interfacciarsi a uno o più gruppi di continuità UPS dotati di una interfaccia a scelta tra USB, seriale oppure una qualche connessione di rete (che sfrutti SNMP, Eaton, MGE XML/HTTP via TCP/IP).

Va da sé che per integrare a Home Assistant un UPS tramite NUT sia necessario installarne e configurarne la parte server, prima di attuare la presente guida.

Qualche guida a tal proposito:

  • in caso si disponga un computer tradizionale, un Mini PC o un Intel NUC con sistema operativo Linux Debian con Docker, la guida è questa;
  • in caso si disponga un Raspberry Pi con sistema operativo Raspberry Pi OS (Raspbian), la guida è questa;
  • in caso si disponga un Raspberry Pi con sistema operativo Raspberry Pi OS (Raspbian) con Docker, la guida è questa;
  • in caso si disponga di Home Assistant OS, la guida è questa.

Solo e unicamente dopo aver installato e configurato con successo il proprio server NUT sarà possibile effettuare l’integrazione come descritto nella presente guida.

N.b. Network UPS Tools non è l’unico componente di integrazione disponibile su Home Assistant per integrare UPS: ne esistono svariati (eg. apcupsd per gli UPS a marca APC). Semplicemente, NUT è uno “strato di standardizzazione” tra i più comunemente utilizzati (e coi quali gli UPS sono più compatibili), ragion per cui abbiamo realizzato questa guida.

Integrazione Home Assistant

Ora che abbiamo dato per assodata la presenza sulla nostra rete LAN di un proprio server NUT che dialoga correttamente col nostro/i UPS, siamo pronti ad attuare l’integrazione presso il nostro HUB. Solitamente il server NUT e Home Assistant sono in esecuzione sullo stesso computer (questo è sicuramente vero nel caso di Home Assistant OS); ciononostante, tale server potrebbe anche essere in esecuzione su un computer diverso. Non è un problema.

Detto ciò, presso l’interfaccia di Home Assistant clicchiamo su “Configurazione” > “Dispositivi e servizi” e poi su “+“. Nell’elenco, cerchiamo NUT:

Home Assistant - Network UPS Tools - Integrazione - 1

 

Trovata l’integrazione, cliccarci sopra. Si aprirà una finestra di dialogo come segue:

Home Assistant - Network UPS Tools - Integrazione - 2

Nei vari campi indicheremo:

Host l’indirizzo IP del server NUT (localhost, se è in esecuzione sullo stesso computer di Home Assistant)
Porta La porta del server, solitamente 3493
Nome utente Il nome utente definito in fase di configurazione del NUT
Password La password relativa all’utente definito in fase di configurazione del NUT

Completati i campi, cliccare su “INVIA“.

Se tutto andrà come deve, Home Assistant riporterà un successo, indicando quale UPS è stato riconosciuto in base alla connessione con il server NUT (in questo caso un Tecnoware Era Plus 1100 (o il leggermente più capiente 1200), come quello portato a mo’ d’esempio nelle guide di installazione del NUT).

Home Assistant - Network UPS Tools - Integrazione - 4

Cliccando su “FINITO“, l’integrazione elencherà i possibili sensori (in base al modello di UPS) includibili a Home Assistant:

Home Assistant - Network UPS Tools - Integrazione - 3

Selezionare dunque quelli di proprio interesse (suggeriamo di includerli tutti).
Terminata questa operazione, presso il menu “Integrazioni” di Home Assistant sarà apparsa una nuova voce:

Home Assistant - Network UPS Tools - Integrazione - 5

Tanti saranno i dispositivi quanti gli UPS “conosciuti” dal server NUT; il numero di entità varierà invece in base al modello/i di UPS (e alle selezioni effettuate nel passo precedente).

A scopo esemplificativo, mostriamo l’elenco delle entità relative al Tecnoware Era Plus 1100 usato com esempio nelle altre guide:

Home Assistant - Tecnoware Eria Plus 1100

Automazione

Arrivati a questo punto ci saremo dotati di diverse entità (principalmente di tipo “Sensor“) che potremo utilizzare sia per la consultazione sia per l’automazione legata allo stato dell’USP (o degli UPS).

Vetrina - Offerte del giorno

Le tre entità che riteniamo più importanti sono essenzialmente:

  • sensor.NOME_UPS_status_data
  • sensor.NOME_UPS_battery_charge
  • sensor.NOME_UPS_load

Le quali ci danno la misura di cosa sia succedendo sul piano elettrico.

Lo stato della prima entità sostanzialmente prevede tre possibili valori:

  • OL (on-line, cioè alimentato a rete)
  • OB (on-battery, ovvero erogazione tramite batteria in corso per assenza di alimentazione di rete)
  • Unknow (quando ci sono problemi di comunicazione verso NUT).

Va da sé che quando si passa da OL a OB significa che è “saltata la corrente”, viceversa quando ritorna.

La seconda entità riporta quanta carica di batteria rimane: arrivati a 0%, l’UPS si spegne. Infine, la terza ci dice quale % di carico l’UPS stia supportato, in caso di erogazione a batterie.

NOTIFICA BLACK-OUT (e ritorno)

Definire un’automazione che per esempio invii una notifica all’app Home Assistant Companion degli inquilini a fronte di un black-out (o del ritorno alla normalità) è quanto di più elementare:

automation:
  - alias: "Notifica power outage"
    trigger:
      platform: state
      entity_id: sensor.NOME_UPS_status_data
    condition: []
    action:
      service: notify.mobile_app_NOME_SMARTPHONE-TABLET
      data:
        data:
          push:
            badge: 1
        title: Domotica
        message: >
          {% if trigger.to_state.state == 'OB' %}
          ATTENZIONE: Assenza di tensione elettrica in casa!
          {% elif trigger.to_state.state == 'OL' %}
          Fornitura elettrica domestica ristabilita.
          {% else %}
          UPS fuori linea.
          {% endif %}

Ovviamente nei blocchi condition e action si potrà impostare quello che meglio si crede, come l’attivazione di un allarme o molto altro.

NOTIFICA BATTERIA BASSA UPS

E se volessimo esser notificati, mentre siamo in blackout, dell’abbassarsi – criticamente – della batteria?

automation:
  - alias: "Notifica batteria UPS bassa"
    trigger:
      platform: numeric_state
      entity_id: sensor.NOME_UPS_battery_charge
      below: 15
    condition: []
    action:
      - service: notify.mobile_app_NOME_SMARTPHONE-TABLET
        data:
          data:
            push:
              badge: 1
          title: Domotica
          message: "Attenzione, capacità residua dell'UPS inferiore al 15%."
SPEGNIMENTO CONTROLLATO RASPBERRY PI

Ipotizziamo che, come capita sovente, il nostro Home Assistant sia in esecuzione su Raspberry Pi o su Mini PC (o altro) e che esso sia alimentato dall’UPS in questione. In caso ci si avvicini allo 0% di batteria residua, vorremo che esso venga spento in modo controllato per evitare danni e corruzione dei dati.

Su Home Assistant OS, definiremmo un’automazione di questo tipo:

automation:
  - alias: "Shutdown per batteria UPS bassa"
    trigger:
      platform: numeric_state
      entity_id: sensor.NOME_UPS_battery_charge
      below: 5
    condition: []
    action:
      - service: notify.mobile_app_NOME_SMARTPHONE-TABLET
        data:
          data:
            push:
              badge: 1
          title: Domotica
          message: "Raspberry Pi in spegnimento controllato per batteria UPS insufficiente."
      - service: hassio.host_shutdown

mentre su Home Assistant Core installato su sistema operativo Raspberry Pi OS, definiremmo un’automazione accompagnata da uno “Shell Command“.

automation:
  - alias: "Shutdown per batteria UPS bassa"
    trigger:
      platform: numeric_state
      entity_id: sensor.NOME_UPS_battery_charge
      below: 5
    condition: []
    action:
      - service: notify.mobile_app_NOME_SMARTPHONE-TABLET
        data:
          data:
            push:
              badge: 1
          title: Domotica
          message: "Raspberry Pi in spegnimento controllato per batteria UPS insufficiente."
      - service: shell_command.shutdown_pi_cmd

shell_command:
  shutdown_pi_cmd: '/usr/bin/sudo /sbin/shutdown now'

Inoltre è necessario eseguire da terminale il seguente comando:

sudo nano /etc/sudoers 

e appurare che esista la seguente riga (altrimenti, aggiungerla) nel file che apparirà:

homeassistant ALL=(ALL) NOPASSWD:ALL

Dopodiché salvare, uscire (ctrl+x, y, invio) e riavviare.

CAMBI DI STATO

A prescindere, è possibile utilizzare un’automazione che invii notifiche (o faccia altro, chiaro) a fronte della ricezione di qualsiasi cambio di stato dell’UPS (o degli UPS) configurato/i su NUT:

automations:
  - alias: 'Cambio di stato UPS'
    trigger:
      platform: event
      event_type: nut.ups_event
    condition: []
    action:
      service: notify.mobile_app_NOME_SMARTPHONE-TABLET
      data:
        data:
          push:
            badge: 1
        title: Domotica
        message:  "{{ trigger.event.data.notify_msg }}"

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.